Skip to content
标签
文档
报表
字数
670 字
阅读时间
4 分钟

一、概述

JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF或EXCEL关联。

二、使用Demo

2.1 添加依赖

<dependency>
    <groupId>org.jfree</groupId>
    <artifactId>jfreechart</artifactId>
    <version>1.5.4</version>
</dependency>

implementation 'org.jfree:jfreechart:1.5.4'

2.2 绘制饼状图

java
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtils;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.StandardChartTheme;
import org.jfree.data.general.DefaultPieDataset;

import java.awt.*;
import java.io.File;
import java.io.IOException;

/**
 * 饼图
 */
public class Demo1 {
    public static void main(String[] args) throws IOException {
		//构建饼图的数据集
        DefaultPieDataset dataset = new DefaultPieDataset();
        dataset.setValue("aaa", 10);
        dataset.setValue("bbb", 20);
        dataset.setValue("ccc", 5);

        StandardChartTheme standardChartTheme = new StandardChartTheme("CN");
        //设置标题字体
        standardChartTheme.setExtraLargeFont(new Font("华文宋体", Font.BOLD, 20));
        //设置图例的字体
        standardChartTheme.setRegularFont(new Font("华文宋体", Font.BOLD, 15));
        //设置轴向的字体
        standardChartTheme.setLargeFont(new Font("华文宋体", Font.BOLD, 15));
        //应用主题样式
        ChartFactory.setChartTheme(standardChartTheme);

        //参数1  title 标题
        // 参数2 dataset 数据集
        // 参数3   是否开启图例
        // 参数4   是否开启工具栏
        // 参数5  是否开启url跳转
        JFreeChart chart = ChartFactory.createPieChart3D("Demo", dataset, true, false, false);
        //生成一张图表的图片文件
        ChartUtils.saveChartAsPNG(new File("e:\\chart1.png"), chart, 400, 300);
    }
}

2.3 绘制折线图

java
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtils;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.StandardChartTheme;
import org.jfree.data.category.DefaultCategoryDataset;

import java.awt.*;
import java.io.File;
import java.io.IOException;

/**
 * 折线图
 */
public class Demo2 {
    public static void main(String[] args) throws IOException {

        DefaultCategoryDataset dataset=new DefaultCategoryDataset();
        dataset.addValue(15,"aaa","2022");
        dataset.addValue(11,"aaa","2023");
        dataset.addValue(10,"aaa","2024");
        dataset.addValue(16,"aaa","2025");

        dataset.addValue(10,"bbb","2022");
        dataset.addValue(30,"bbb","2023");
        dataset.addValue(6,"bbb","2024");
        dataset.addValue(16,"bbb","2025");

        dataset.addValue(10,"ccc","2022");
        dataset.addValue(20,"ccc","2023");
        dataset.addValue(30,"ccc","2024");
        dataset.addValue(15,"ccc","2025");
        StandardChartTheme standardChartTheme=new StandardChartTheme("CN");
        //设置标题字体
        standardChartTheme.setExtraLargeFont(new Font("华文宋体",Font.BOLD,20));
        //设置图例的字体
        standardChartTheme.setRegularFont(new Font("华文宋体", Font.PLAIN,15));
        //设置轴向的字体
        standardChartTheme.setLargeFont(new Font("华文宋体",Font.PLAIN,15));
        //应用主题样式
        ChartFactory.setChartTheme(standardChartTheme);
        //参数1  title 标题
        //参数2 x轴的说明
        //参数3   Y轴的说明
        //参数4   数据集
        JFreeChart chart= ChartFactory.createLineChart("demo", "年度", "数量", dataset);
        //生成一张图表的图片文件
        ChartUtils.saveChartAsPNG(new File("e:\\chart2.png"), chart, 400, 300);
    }
}

2.4 绘制柱状图

java
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtils;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.StandardChartTheme;
import org.jfree.data.category.DefaultCategoryDataset;

import java.awt.*;
import java.io.File;
import java.io.IOException;

/**
 * 柱状图
 */
public class Demo3 {

    public static void main(String[] args) throws IOException {
        DefaultCategoryDataset dataset=new DefaultCategoryDataset();
        dataset.addValue(15,"aaa","2022");
        dataset.addValue(11,"aaa","2023");
        dataset.addValue(10,"aaa","2024");
        dataset.addValue(16,"aaa","2025");

        dataset.addValue(10,"bbb","2022");
        dataset.addValue(30,"bbb","2023");
        dataset.addValue(6,"bbb","2024");
        dataset.addValue(16,"bbb","2025");

        dataset.addValue(10,"ccc","2022");
        dataset.addValue(20,"ccc","2023");
        dataset.addValue(30,"ccc","2024");
        dataset.addValue(15,"ccc","2025");

        StandardChartTheme standardChartTheme=new StandardChartTheme("CN");
        //设置标题字体
        standardChartTheme.setExtraLargeFont(new Font("华文宋体",Font.BOLD,20));
        //设置图例的字体
        standardChartTheme.setRegularFont(new Font("华文宋体", Font.PLAIN,15));
        //设置轴向的字体
        standardChartTheme.setLargeFont(new Font("华文宋体",Font.PLAIN,15));
        //应用主题样式
        ChartFactory.setChartTheme(standardChartTheme);
        //参数1  title 标题
        //参数2 x轴的说明
        //参数3   Y轴的说明
        //参数4   数据集
        JFreeChart chart= ChartFactory.createBarChart("demo", "年度", "数量", dataset);
        //生成一张图表的图片文件
        ChartUtils.saveChartAsPNG(new File("e:\\chart3.png"), chart, 400, 300);
    }
}